package com.app.service;

import com.app.vo.ClassInfoVO;
import com.app.vo.ClassDetailVO;
import com.app.vo.HomeworkInfoVO;
import com.app.vo.PunchStatsVO;
import com.app.vo.PunchItemVO;
import com.app.vo.ClassMemberVO;
import com.app.dto.CreateClassDTO;
import com.app.dto.JoinClassDTO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.app.entity.po.HuibenClass;
import com.app.entity.po.HuibenClassMember;
import java.util.List;

/**
 * 班级表 服务接口
 *
 * @author lizi
 * @since 2025-07-29
 */
public interface IHuibenClassService extends IService<HuibenClass> {
    /**
     * 获取用户班级列表
     * @return 班级信息列表
     */
    List<ClassInfoVO> getClassList();

    /**
     * 获取班级详情（含打卡统计）
     * @param classId 班级ID
     * @return 班级详情VO
     */
    ClassDetailVO getClassDetail(Long classId);

    /**
     * 获取班级作业列表
     * @param classId 班级ID
     * @param page 页码
     * @param pageSize 每页数量
     * @return 作业信息列表
     */

    /**
     * 获取班级打卡统计
     * @param classId 班级ID
     * @return 打卡统计VO
     */
    // PunchStatsVO getPunchStats(Long classId);

    /**
     * 获取班级打卡记录（分页）
     * @param classId 班级ID
     * @param page 页码
     * @param pageSize 每页数量
     * @return 打卡记录列表
     */
    List<PunchItemVO> getPunchList(Long classId, Integer page, Integer pageSize);

    /**
     * 获取班级成员列表（分页）
     * @param classId 班级ID
     * @param page 页码
     * @param pageSize 每页数量
     * @return 班级成员列表
     */
    List<ClassMemberVO> getMemberList(Long classId, Integer page, Integer pageSize);

    /**
     * 创建班级
     * @param dto 创建班级请求参数
     * @return 新班级ID
     */
    void createClass(CreateClassDTO dto);

    /**
     * 加入班级
     * @param
     * @return 加入的班级ID
     */
    Long joinClass(String inviteCode);

    /**
     * 检查是否为班级创建者
     * @param classId 班级ID
     * @return 是否为创建者
     */
    boolean checkIsCreator(Long classId);
}
